package dto

import (
	"go-admin/app/admin/models"
	"go-admin/common/dto"
	common "go-admin/common/models"
)

// SysTemplateTypeGetPageReq 列表或者搜索使用结构体
type SysTemplateTypeGetPageReq struct {
	dto.Pagination `search:"-"`
	ParentId       int    `form:"parentId" search:"type:exact;column:parent_id;table:sys_member_type" comment:"上级会员类型"` //上级会员类型
	TypeName       string `form:"typeName" search:"type:exact;column:type_name;table:sys_member_type" comment:"会员类型名称"` //会员类型名称
	Sort           int    `form:"sort" search:"type:exact;column:sort;table:sys_member_type" comment:"排序"`              //排序
	Status         string `form:"status" search:"type:exact;column:status;table:sys_member_type" comment:"状态"`          //状态
}

func (m *SysTemplateTypeGetPageReq) GetNeedSearch() interface{} {
	return *m
}

type SysTemplateTypeInsertReq struct {
	Id       int    `uri:"id" comment:"编码"`                          // 模版类型编码
	ParentId int    `json:"parentId" comment:"上级模版类型" vd:"?"`        //上级模版类型
	TypeName string `json:"typeName" comment:"模版类型名称" vd:"len($)>0"` //模版类型名称
	Sort     int    `json:"sort" comment:"排序" vd:"?"`                //排序
	Status   int    `json:"status" comment:"状态" vd:"$>0"`            //状态
	common.ControlBy
}

func (s *SysTemplateTypeInsertReq) Generate(model *models.SysTemplateType) {
	if s.Id != 0 {
		model.Id = s.Id
	}
	model.TypeName = s.TypeName
	model.ParentId = s.ParentId
	model.Sort = s.Sort
	model.Status = s.Status
}

// GetId 获取数据对应的ID
func (s *SysTemplateTypeInsertReq) GetId() interface{} {
	return s.Id
}

type SysTemplateTypeUpdateReq struct {
	Id       int    `uri:"id" comment:"编码"`                           // 模版类型编码
	ParentId int    `json:"parentId" comment:"上级模版类型" vd:"?"`         //上级模版类型
	TypeName string `json:"typeName"  comment:"模版类型名称" vd:"len($)>0"` //模版类型名称
	Sort     int    `json:"sort" comment:"排序" vd:"?"`                 //排序
	Status   int    `json:"status" comment:"状态" vd:"$>0"`             //状态
	common.ControlBy
}

// Generate 结构体数据转化 从 SysTemplateTypeControl 至 SysTemplateType 对应的模型
func (s *SysTemplateTypeUpdateReq) Generate(model *models.SysTemplateType) {
	if s.Id != 0 {
		model.Id = s.Id
	}
	model.TypeName = s.TypeName
	model.ParentId = s.ParentId
	model.Sort = s.Sort
	model.Status = s.Status
}

// GetId 获取数据对应的ID
func (s *SysTemplateTypeUpdateReq) GetId() interface{} {
	return s.Id
}

type SysTemplateTypeGetReq struct {
	Id int `uri:"id"`
}

func (s *SysTemplateTypeGetReq) GetId() interface{} {
	return s.Id
}

type SysTemplateTypeDeleteReq struct {
	Ids []int `json:"ids"`
}

func (s *SysTemplateTypeDeleteReq) GetId() interface{} {
	return s.Ids
}

type TemplateTypeLabel struct {
	Id       int                 `gorm:"-" json:"id"`
	Label    string              `gorm:"-" json:"label"`
	Children []TemplateTypeLabel `gorm:"-" json:"children"`
}
